Network interface devices, such as, for example, cable modems are one way that multiple services operators (“MSO”) have been meeting the demand for increased bandwidth capabilities in delivering information over networks from a central location, such as a head end, to users, such as residential and commercial end users. To facilitate such information delivery, standards have been developed that allow equipment from different manufacturers to operate, or ‘talk’ to one another. The predominant standard used in the cable modem industry is known as Data Over Cable Service Interface Specification, or “DOCSIS”, for use in delivering digital data, such as internet information, to users over the existing coaxial lines of the Community Antenna Television system (“CATV”), which has been delivering cable television programming to users at least since the 1960's.
Currently, DOCSIS requires that when the software operating system loaded on a cable modem is remotely updated with updated software code over the network, the cable modem should be capable of recovering from an incomplete download and update procedure without the need for MSO personnel to manually update and restart the modem. In such a scenario, an MSO will typically change a software load's filename in the configuration file that is downloaded from the head end to the cable modem when the modem ranges and registers (range and register are terms known in the art). The cable modems then individually request new software corresponding to the updated filename from the head end.
It will be appreciated that this process is used in the DOCSIS systems, but other applications may use a broadcast download routine. In addition, another method used for downloading updated software code to a cable modem in a DOCSIS system is known in the art as Simple Network Managment Protocol (“SNMP”). SNMP allows the MSO to set various parameters on a cable modem remotely. Thus, an MSO can set the new filename of a new software load on a cable modem and instruct the cable modem to download same. Thus, personnel of the MSO need not physically visit a MSO subscriber's premises to upgrade, update or otherwise modify a given cable modem's operating system or other application software. An example of other application software that may be implemented by a cable modem includes PacketCable software for facilitating voice telephony over the cable modem system.
The specifications for DOCSIS, as well as PacketCable, require that a cable modem be able to recover from an unsuccessful download and update procedure, which may be caused by a power loss during downloading and updating of code. If the code is only partially downloaded and updated when a power loss occurs, then the partial code could render the modem inoperable.
To overcome the potential inability to reboot a cable modem after loss of code that may occur when the power loss occurs, cable modems are typically engineered to accommodate two copies of the code. Each copy includes the operating system code as well as applications code. Thus, if a given code is interrupted during download, the modem is not rendered inoperable because the second copy of the code, as it existed before the download process was begun, can be used to reboot the cable modem after power has been restored. Upon boot-up, the code is typically loaded from a flash memory device into random access memory (“RAM”). If the operating system sought by the system upon boot-up has been corrupted, then the system looks to the second copy, or ‘backup.’ Although this ‘dual banking’ scheme provides adequate protection against an incomplete or corrupt download of updated software, a drawback is that twice the amount of flash memory space is required to store two separate and complete sets of code in a compressed format, each set comprising both operating and applications code. Since the cost of the flash memory used in cable modems is not insignificant, the overall cost is increased for a cable modem designed to use the dual banking scheme as compared with a modem that does not need to store two separate and identical copies of code. In addition, since two copies must be maintained, the size of either the DOCSIS operating system code portion, as well as whatever applications software may be stored is limited. For example, a typical software load in a cable modem may include the DOCSIS portion using 1.2 megabytes (“MB”) and the applications portion comprising 1.0 MB. While these are just examples, they illustrate typical load sizes for the DOCSIS operating system and application code, such as, for example, PacketCable, respectively.
Since flash memory typically is typically manufactured having storage capacity sizes that are powers of two, a 4 MB flash memory chip could not store two copies of software used in the dual banking scheme. Thus, an 8 MB flash memory device is typically used to accommodate the two software load copies. By inefficiently using the flash memory capacity in a dual banking system (only 4.4 MB plus one boot loader sector and two non-volatile memory (“NVM”) sectors—may be used for instruction pointers and factory information—are used, leaving approximately 3 MB unused), cost are typically higher
Thus, there is a need for a method and system for downloading code from a Cable Modem Termination System (“CMTS”) head end to a cable modem that preserves the invulnerability of the modem against an incomplete download of updated software, which could result in the inability to reboot the modem. Furthermore, there is a need for a method and system for downloading and updating such program code that facilitates an increase in the size of software code that can be stored while at the same time reducing the cost of the modem.